/* ====================================================================
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 2004 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Apache" and "Apache Software Foundation" and
 *    "Apache Lucene" must not be used to endorse or promote products
 *    derived from this software without prior written permission. For
 *    written permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache",
 *    "Apache Lucene", nor may "Apache" appear in their name, without
 *    prior written permission of the Apache Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 *
 * $Id: HighlightAnalyzer.java,v 1.2 2004/05/29 20:24:33 chedong Exp $
 */

package org.apache.lucene.analysis;

import java.io.Reader;
import java.util.ArrayList;

import org.apache.lucene.analysis.cjk.CJKTokenizer;

/**
 * Filters source string with Tokenizer and HighlightFilter
 * 
 * @author Che, Dong
 * 
 * @since WebLucene 0.1
 */
public final class HighlightAnalyzer extends Analyzer {
	// ~ Static fields/initializers
	// ---------------------------------------------

	/**
	 * An array containing some common English words that are not usually useful
	 * for searching and some double-byte interpunctions.
	 */
	private static String[] stopWords = null;

	// ~ Instance fields
	// --------------------------------------------------------

	/** named word list */
	private ArrayList wordList;

	// ~ Constructors
	// -----------------------------------------------------------

	/**
	 * Builds an analyzer which removes words in the provided array.
	 * 
	 * @param words
	 *            DOCUMENT ME!
	 */
	public HighlightAnalyzer(String[] words) {
		wordList = HighlightFilter.makeStopTable(words);
	}

	/**
	 * Builds an analyzer which removes words in the provided array.
	 * 
	 * @param highlightTable
	 *            high light word list
	 */
	public HighlightAnalyzer(ArrayList highlightTable) {
		wordList = highlightTable;
	}

	// ~ Methods
	// ----------------------------------------------------------------

	/**
	 * Tokenizer with StopFilter.
	 * 
	 * @param field
	 *            field name
	 * @param reader
	 *            input reader
	 * 
	 * @return TokenStream
	 */
	public final TokenStream tokenStream(String field, Reader reader) {
		return new HighlightFilter(new CJKTokenizer(reader), wordList);
	}
}
